﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using AGPR.Locadora.Model;

namespace AGPR.Locadora.Web.Controllers
{
    /// <summary>
    /// Controlador Base que é usado em todos Controladores
    /// </summary>
    public class BaseController : Controller
    {
        #region Atributos

        /// <summary>
        /// Página Inicial após login
        /// </summary>
        const string PAGINA_INICIAL = "clientes";

        #region isLogado

        /// <summary>
        /// Atributo de Sessão que indica se o funcionário está logado
        /// </summary>
        public bool isLogado
        {
            get
            {
                return (bool)Session["logado"];
            }
            set
            {
                Session["logado"] = value;
            }
        }

        #endregion

        #region usuario

        /// <summary>
        /// Usuário logado atualmente
        /// </summary>
        public Funcionario usuario
        {
            get
            {
                return (Funcionario)Session["usuario"];
            }
            set
            {
                Session["usuario"] = value;
            }
        }

        #endregion

        #endregion

        #region Initializer

        /// <summary>
        /// Initializer que define os dados basicos das Views
        /// Hack (Pois o construtor não recebe o contexto da sessão
        /// </summary>
        protected override void Initialize(System.Web.Routing.RequestContext requestContext)
        {
            base.Initialize(requestContext);

            ViewBag.isLogado = this.isLogado;
            ViewBag.usuario = this.usuario;
        }

        #endregion

        #region Inicio

        /// <summary>
        /// Redireciona para a página Inicial
        /// </summary>
        /// <returns></returns>
        protected ActionResult Inicio()
        {
            return RedirectToAction("index", this.isLogado ? PAGINA_INICIAL : "sessao");
        }

        #endregion

        protected virtual ActionResult ChecarLogin()
        {
            if ( ! this.isLogado)
            {
                return RedirectToAction("login", "sessao");
            }

            return null;
        }
    }
}
